
ViewCtrl = Class('ViewCtrl');  -- 定义一个类

---初始化变量
ViewCtrl.navCtrl = nil;   -- 对应的navctrl
ViewCtrl.rootView = nil;   -- 对应的navctrl
ViewCtrl.contentLayout = nil;   -- 引入layout文件
-- 初始化
function ViewCtrl:init()
  return self;
end
function ViewCtrl:ctor()
  self.viewcash ={};    -- view 缓存
  self.plugincash ={};      -- 插件缓存
  print('ViewCtrl:initViewCtrl')
  return self;
end
-- 局部变量
function ViewCtrl:push(viewCtrl,animat)
  print('ViewCtrl:push=',viewCtrl)
  self.navCtrl:push(viewCtrl,1);

end

function ViewCtrl:pop(animat)
  self.navCtrl:pop(1);
end

function ViewCtrl:popOfViewCtrl(viewCtrl,animat)
  self.navCtrl:popOfViewCtrl(viewCtrl,animat);
end

--[[


功能   ：  controller被创建 状态


参数   ： 无


返回   ： 无


]]
function ViewCtrl:onCtrlCreate(rootView)
  self.rootView = rootView;
  --self.hideHeadView = true;
  local w,h = rootView:getWH();

  if self.contentLayout and  self.contentLayout ~= '' then  --如果页面显示的是布局生成器的页面
    local data = 0;
    --先遍历json看是否有headView
    local jsoninfo = MLFile.readFile('res/layout/'..self.contentLayout..'.layout');
    local layout = MLNative.json(jsoninfo);
    if layout then
      local data = UILayout.isHeadView(layout)
      if data == 1  then  --说明是有自制的headView 整屏显示
        local view  = UILayout.parseJson(self.contentLayout, w, h, self )
        rootView:add(view);
        self:onCreate(rootView);
      else
        if self.hideHeadView == nil or self.hideHeadView == false then   --标题存在
          self.headView = UIHeadView.new():init(self,'ViewCtrl.hideview');
          self.headView:setTitle(self.title);
          if self.vcSeq ==  MLNative.rootViewCtrlSeq then
            self.headView:setLeftHidden (true)
          else
            self.headView:setLeftHidden (false)
          end

          local headH = self.headView:getHeight();
          local content  = UILayout.parseJson(self.contentLayout, w, h-headH, self )
          rootView:add(self.headView, 0, 0);
          rootView:add(content, 0, headH);
          self:onCreate(content);
        else
          print('rootView====',w,h)
          local content  = UILayout.parseJson(self.contentLayout, w, h, self )
          rootView:add(content, 0, 0);
          self:onCreate(rootView);
        end
      end
    else  print('layout文件不存在.....')
    end
  else
    --显示标题
    if self.hideHeadView == nil or self.hideHeadView == false then
      self.headView = UIHeadView.new():init(self,'ViewCtrl.hideview');
      self.headView:setTitle(self.title);
      if self.vcSeq ==  MLNative.rootViewCtrlSeq then
        self.headView:setLeftHidden (true)
      else
        self.headView:setLeftHidden (false)
      end

      local headH = self.headView:getHeight();
      --local w,h = rootView:getWH();
      local content = MLView.new():initView(w, h - headH,self,'ViewCtrl.content');
      rootView:add(self.headView, 0, 0);
      rootView:add(content, 0, headH);

      self:onCreate(content);
    else
      self:onCreate(rootView);
    end

  end



  --刷新view
  if self.viewcash then
    for i,v in ipairs(self.viewcash) do
      if v.onCreate then
        v:onCreate();
      end
      if v.show then
        v:show();
      end
    end
  end
  -- 通知插件状态
  if self.plugincash then
    for i,v in ipairs(self.plugincash) do
      if v.onCreate then
        v:onCreate();
      end
    end
  end
end

--[[


功能   ： controller恢复 状态


参数   ： 无


返回   ： 无


]]
function ViewCtrl:onCtrlResume()
  print('ViewCtrl:onCtrlResume')
  self:onResume();
  if self.viewcash then
    for i,v in ipairs(self.viewcash) do
      if v.onResume then
        v:onResume();
      end
    end
  end
  -- 通知插件状态
  if self.plugincash then
    for i,v in ipairs(self.plugincash) do
      if v.onResume then
        v:onResume();
      end
    end
  end
end

function ViewCtrl:onCtrlPause()
  print('ViewCtrl:onCtrlPause')
  self:onPause();
  if self.viewcash then
    for i,v in ipairs(self.viewcash) do
      if v.onPause then
        v:onPause();
      end
    end
  end
  -- 通知插件状态
  if self.plugincash then
    for i,v in ipairs(self.plugincash) do
      if v.onPause then
        v:onPause();
      end
    end
  end
end

function ViewCtrl:onCtrlDestroy()
  print('ViewCtrl:onCtrlDestroy')
  self:onDestroy();
  if self.viewcash then
    for i,v in ipairs(self.viewcash) do
      if v.onDestroy then
        v:onDestroy();
      end
    end
  end
  -- 通知插件状态
  if self.plugincash then
    for i,v in ipairs(self.plugincash) do
      if v.onDestroy then
        v:onDestroy();
      end
    end
  end
end
--[[


功能   ： 根据视图ID得到视图


参数   ： 无


返回   ： 无


]]
function ViewCtrl:getView(id)
  if id == nil then return end
  if self.viewcash  then
    for i,v in ipairs(self.viewcash) do
      if v.id == id then
        return v;
      end
    end
  end
end
--[[
功能   ：  生成布局页面
参数   ： view-对应的layout文件；w 宽；h高；vc 引用的页面
返回   ： view
]]
function ViewCtrl:inflate(view,w,h,vc)
  --print('ViewCtrl:inflate')
  --  local w,h = self.rootView:getWH();
  --  local headH = self.headView:getHeight();
  --print('hhhhhhhhh====',w,h)
  local view  = UILayout.parseJson(view, w,h, vc )
  return view;
end
--[[
功能   ： 将视图添加到控制里
参数   ： 无
返回   ： 无
]]
function ViewCtrl:addView(view)
  if self.viewcash  then   -- 添加到ctrl缓存
    self.viewcash[#self.viewcash + 1] = view; -- 填到刷新队列
  end
end

--[[


功能   ： 添加插件


参数   ： 无


返回   ： 无


]]
function ViewCtrl:addPlugin(plugin)
  if self.plugincash  then   -- 添加到ctrl缓存
    self.plugincash[#self.plugincash + 1] = plugin; -- 填到刷新队列
  end
end

------------------------------ 代理


--[[


功能   ：  controller被创建 代理


参数   ： 无


返回   ： 无


]]
function ViewCtrl:onCreate(rootView)
  print("ViewCtrl:onCreate")
end

--[[


功能   ： controller恢复 代理


参数   ： 无


返回   ： 无


]]
function ViewCtrl:onResume()
end

--[[


功能   ： controller暂停 代理


参数   ： 无


返回   ： 无


]]
function ViewCtrl:onPause()
end

--[[


功能   ： controller 摧毁代理


参数   ： 无


返回   ： 无


]]
function ViewCtrl:onDestroy()
end






